package model

const (
	FieldsPathThing       = "ThingListObject.ThingObject"
	FieldsSinglePathThing = "ThingObject"
)

// 物品对象特征属性
type Thing struct {
	// 物品标识; 必选; 全局唯一标识
	ThingID string
	// 信息分类; 必选; 人工采集还是自动采集;required
	InfoKind InfoType
	// 来源标识; 必选; 来源图像标识;required
	SourceID string
	// 设备编码; 特定条件下必选; 设备编码，自动采集必选
	DeviceID string
	// 左上角X坐标; 特定条件下必选;
	//物品的轮廓外接矩形在画面中的位置，记录矩形框的左上角坐标和右下角坐标， 自动采集记录时为必选
	LeftTopX int
	// 左上角Y坐标; 特定条件下必选;
	LeftTopY int
	// 右下角X坐标; 特定条件下必选;
	RightBtmX int
	// 右下角Y坐标; 特定条件下必选;
	RightBtmY int
	// 位置标记时间; 特定条件下必选; 人工采集时有效
	LocationMarkTime string
	// 出现时间; 特定条件下必选;
	AppearTime string
	// 消失时间; 特定条件下必选;
	DisappearTime string
	// 物品名称; 特定条件下必选; 被标注物品名称;required
	Name string
	// 物品形状; 特定条件下必选; 被标注物品形状描述;required
	Shape string
	// 物品颜色; 必选;required
	Color ColorType
	// 物品大小; 可选; 被标注物品大小描述
	Size string
	// 物品材质; 可选; 被标注物品材质描述
	Material string
	// 物品特征; 可选; 被标注物品特征描述
	Characteristic string
	// 物品性质; 可选;
	Propertiy string
	// 涉案物品类型; 可选;
	InvolvedObjType string
	// 枪支弹药类别; 可选;
	FirearmsAmmunitionType string
	// 工具痕迹代码; 可选;
	ToolTraceType string
	// 物证类别; 可选;
	EvidenceType string
	// 案(事)件物证形态代码; 可选;
	CaseEvidenceType string
	// 图像列表; 可选; 可以包含0个或者多个子图像对象
	SubImageList *SubImageInfoListObject

	//来源视图库 id
	SourceViewID string
}

// 查询物品对象列表
type GetThingArrReq struct {
	Thing
}

// 查询物品对象响应
//type GetThingArrResp []*Thing

// 获取查询人脸对象
type GetThingArrResp struct {
	//PageRecordNum   int
	//StartNum        int
	//TotalNum        int
	ThingListObject struct {
		ThingObject []*Thing
	}
}

// 批量创建物品对象请求
type CreateThingArrReq struct {
	ThingListObject struct {
		ThingObject []*Thing
	}
}

type GetThingResp struct {
	ThingObject *Thing
}
